import { HikvisionBaseService } from "../base";
import { hikvision } from "../type";

/**
 * 资源 - 车辆及车库管理api
 */
export class ResourceVehicleService extends HikvisionBaseService {
	/** 查询车辆列表v2
     *  - 查询车辆列表接口可以根据车牌号码、车主姓名、车辆类型、车牌类型、是否关联人员、车辆状态这些查询条件来进行高级查询；若不指定查询条件，即全量获取所有的车辆信息。返回结果分页展示。
        注：若指定多个查询条件，表示将这些查询条件进行“与”的组合后进行精确查询
        当一个车辆属于多个区域时，查询时会返回多条记录。
        当返回字段对应的值为空时，该字段不返回。
     */
	async queryVehicleListV2(params: hikvision.isc.IGetVehicleListV2RequestParams) {
		const url = `${this.config.baseUrl}/api/resource/v2/vehicle/advance/vehicleList`;
		const res = await this.curl<
			hikvision.isc.IResponse<{ total: number; pageNo: number; pageSize: number; list: hikvision.isc.IVehicleObject[] }>
		>(url, {
			method: "POST",
			dataType: "json",
			contentType: "json",
			headers: {
				access_token: this.accessToken,
			},
			data: {
				...params,
			},
		});
		this.handleResponseException(res, `查询车辆列表v2出错`);
		return res.data.data;
	}

	/** 批量删除车辆
	 * - 若执行结果为部分删除成功，则返回删除失败的车辆id和错误信息，若全部成功，则data为空。
	 */
	async batchDeleteVehicle(vehicleIds: string[]) {
		const url = `${this.config.baseUrl}/api/resource/v1/vehicle/batch/delete`;
		const res = await this.curl<hikvision.isc.IResponse<{ vehicleId: string; code: string; msg: string }[]>>(url, {
			method: "POST",
			dataType: "json",
			contentType: "json",
			headers: {
				access_token: this.accessToken,
			},
			data: {
				vehicleIds,
			},
		});
		this.handleResponseException(res, `批量删除车辆出错`);
		return res.data.data;
	}
}
